`:top
`!RenderMan Shading Language`! (abrégé en `!RSL`!, en français `*langage d'ombrage RenderMan`*) est un composant de `F33f`_`[RenderMan Interface Specification`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=RenderMan_Interface_Specification]`_`f qui est utilisé pour définir des `F33f`_`[shaders`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Shader]`_`f. La syntaxe du langage est `F33f`_`[de type C`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=C_(langage)]`_`f.
Un shader écrit en RSL peut être utilisé sans modification sur n'importe quel `F33f`_`[moteur de rendu 3D`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Moteur_de_rendu_3D]`_`f conforme à RenderMan, tel que `F33f`_`[PhotoRealistic RenderMan`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=PhotoRealistic_RenderMan]`_`f de Pixar, 3Delight (en) de DNA Research, Air de Sitexgraphics ou une solution open source telle que Pixie (en) ou Aqsis (en).
`*RenderMan Shading Language`* définit des fonctions autonomes et cinq types de shaders : shaders de surface, de lumière, de volume, imageur et de déplacement.
Un exemple de shader de surface qui définit une surface métallique est :
`B100`F9d9surface metal (float Ka = 1; float Ks = 1; float roughness = 0.1;)`f`b
`B100`F9d9{`f`b
`B100`F9d9 normal Nf = faceforward (normalize(N), I);`f`b
`B100`F9d9 vector V = - normalize (I);`f`b
`B100`F9d9 Oi = Os;`f`b
`B100`F9d9 Ci = Os * Cs * (Ka * ambient() + Ks * specular (Nf, V, roughness));`f`b
`B100`F9d9}`f`b
Les shaders réalisent leur travail en lisant en en écrivant des variables spéciales telles que Cs (couleur de surface), N (normale en un point donné) et Ci (couleur de surface finale). Les arguments des shaders sont des paramètres globaux qui sont attachés aux objets du modèle (et donc un shader de métal peut être utilisé pour différents métaux). Les shaders n'ont pas de valeur de retour, mais des fonctions peuvent être définies, qui prennent des arguments en entrée et retournent une valeur. Par exemple, la fonction suivante calcule la longueur d'un vecteur avec l'opérateur `F33f`_`[produit scalaire`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Produit_scalaire]`_`f "." :
`B100`F9d9float length (vector v) {`f`b
`B100`F9d9 return sqrt (v . v); /* . is a dot product */`f`b
`B100`F9d9}`f`b
>>Contents
• `F0af`_`[Voir aussi`#voir-aussi]`_`f
• `F0af`_`[Bibliographie`#bibliographie]`_`f
• `F0af`_`[Liens externes`#liens-externes]`_`f
-─
>>Voir aussi
>>>Bibliographie
• `:upstill1990`a`:steve-upstill1990`a(en) Steve Upstill, The RenderMan companion : a programmer's guide to realistic computer graphics, Reading, Mass, Addison-Wesley, 1990 (`F33f`_`[ISBN`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=International_Standard_Book_Number]`_`f 0-201-50868-0, lire en ligne)
• `:apodacagritz1999`a`:anthony-apodacalarry-gritz1999`a(en) Anthony Apodaca et Larry Gritz, Advanced RenderMan : creating CGI for motion pictures, San Francisco, Morgan Kaufmann, 1999 (`F33f`_`[ISBN`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=International_Standard_Book_Number]`_`f 1-55860-618-1, lire en ligne)
• `:cortesraghavachary2008`a`:rudy-cortessaty-raghavachary2008`a(en) Rudy Cortes et Saty Raghavachary, The RenderMan shading language guide, Boston, Mass, Thomson Course Technology, 2008 (`F33f`_`[ISBN`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=International_Standard_Book_Number]`_`f 1-59863-286-8)
>>>Liens externes
• Shading Language (RSL) documentation
• Portail de l’imagerie numérique
• Portail de Disney • section `!Pixar`!
`c`F0af`_`[↑ Back to top`#top]`_`f`a